<?php

namespace App\Middleware;

use Core\Contracts\Middleware;
use Core\Logger;
use Core\Request;
use Core\Response;

/**
 * 示例中间件：记录每个请求。
 */
class LogMiddleware implements Middleware
{
    public function handle(Request $request, callable $next): Response
    {
        // 1. 在控制器运行前执行
        Logger::info("Request: {$request->getMethod()} {$request->getUri()}");

        // 2. 调用下一个中间件或控制器
        // $next() 必须被调用，否则请求将在此停止
        $response = $next($request);

        // 3. 在控制器运行后执行（可以访问 $response）
        Logger::info("Response: Sent status {$response->getStatusCode()}"); // 假设 Response 有 getStatusCode()

        return $response;
    }
}
// 注意：为了让上述代码工作，您需要在 Response 类中添加一个 getStatusCode() 方法：
// public function getStatusCode(): int { return $this->statusCode; }